// 背景动效主文件
// 优化：确保正确加载背景效果模块并传递背景图片URL

// 存储待执行的动效类型，等待所有模块加载完成后再执行
let pendingEffectType = null;

// 临时的全局函数，直到index.js加载完成
window.initBackgroundEffect = window.initBackgroundEffect || function(effectType) {
    console.log('initBackgroundEffect called with:', effectType, '(pending until modules loaded)');
    console.log('Current window.backgroundImageUrl:', window.backgroundImageUrl);
    
    // 存储待执行的动效类型
    pendingEffectType = effectType;
    
    // 如果index.js已经加载完成（有validEffects数组），则直接执行
    if (window.validEffects && window.validEffects.includes(effectType)) {
        // 实际功能将由index.js中的实现覆盖
    }
    // 否则，等待index.js加载完成后再执行（在index.js中会检查pendingEffectType）
};

// 提供获取待执行动效的方法
window.getPendingEffectType = function() {
    return pendingEffectType;
};

// 加载入口文件
(function() {
    // 动态加载背景效果入口文件
    const script = document.createElement('script');
    script.src = '/static/js/background-effects/index.js'; // 使用绝对路径确保正确加载
    script.onload = function() {
        console.log('Background effects index.js loaded successfully');
        // 入口文件加载完成后，确保背景图片URL已设置
        console.log('After index.js loaded, window.backgroundImageUrl:', window.backgroundImageUrl);
        
        // 等待一小段时间确保所有子模块都已加载
        setTimeout(() => {
            // 如果有pendingEffectType或backgroundEffect已设置，则初始化背景效果
            const effectToInit = pendingEffectType || window.backgroundEffect;
            if (effectToInit) {
                console.log('Initializing background effect after all modules loaded:', effectToInit);
                if (typeof window.initBackgroundEffect === 'function') {
                    window.initBackgroundEffect(effectToInit);
                }
            }
        }, 100);
    };
    script.onerror = function() {
        console.error('Failed to load background effects index.js');
    };
    document.head.appendChild(script);
})();

// 页面加载完成后，再次尝试初始化背景动效（作为双重保障）
window.addEventListener('load', function() {
    // 延迟执行，确保所有脚本都已加载完成
    setTimeout(() => {
        // 使用window.backgroundEffect作为默认动效类型
        if (window.backgroundEffect) {
            console.log('Page fully loaded, initializing background effect:', window.backgroundEffect);
            console.log('At page load, window.backgroundImageUrl:', window.backgroundImageUrl);
            
            if (typeof window.initBackgroundEffect === 'function') {
                window.initBackgroundEffect(window.backgroundEffect);
            }
        }
    }, 300);
});

// 为调试目的，添加全局方法来手动刷新背景效果
window.refreshBackgroundEffect = function() {
    console.log('Manual refresh background effect called');
    console.log('Current window.backgroundEffect:', window.backgroundEffect);
    console.log('Current window.backgroundImageUrl:', window.backgroundImageUrl);
    
    if (window.backgroundEffect && typeof window.initBackgroundEffect === 'function') {
        window.initBackgroundEffect(window.backgroundEffect);
    }
};

// 添加切换背景效果的全局方法
window.switchBackgroundEffect = function(effectType) {
    console.log('Switching background effect to:', effectType);
    window.backgroundEffect = effectType;
    
    // 清理当前效果
    const canvas = document.getElementById('background-canvas');
    if (canvas && canvas.getContext) {
        const ctx = canvas.getContext('2d');
        ctx.clearRect(0, 0, canvas.width, canvas.height);
    }
    
    // 重新初始化新效果
    window.refreshBackgroundEffect();
};

// 注意：所有动效实现已被拆分到background-effects目录下的单独文件中
